package com.beidu.lottery.call.dao;


import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.beidu.lottery.call.entity.ParticipationLottery;
import com.beidu.lottery.call.entity.query.ActivityAwardRecordsQuery;
import com.beidu.lottery.call.entity.query.JoinListQuery;
import com.beidu.lottery.call.entity.vo.ActivityLotteryListVO;
import com.beidu.lottery.call.entity.vo.UserAwardRecordDetailVO;
import com.beidu.lottery.call.entity.vo.UserAwardRecordVO;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * <p>
 * 抽奖活动参与表 Mapper 接口
 * </p>
 *
 * @author 北渡
 * @since 2023-11-09
 */
public interface ParticipationLotteryMapper extends BaseMapper<ParticipationLottery> {

    /**
     * 统计查询中奖名单数量
     *
     * @param param 查询条件
     * @return 数量
     * @author 北渡
     */
    Integer countAwardRecords(@Param("param") ActivityAwardRecordsQuery param);

    /**
     * 分页查询中奖名单（字符串）
     *
     * @param param 查询条件
     * @return 字符串格式：恭喜 {用户昵称} 获得了 {奖品名称}
     * @author 北渡
     */
    List<String> pageAwardRecords(@Param("param") ActivityAwardRecordsQuery param);

    /**
     * 分页查询用户中奖记录
     *
     * @param uid   用户ID
     * @param param 查询条件
     * @author 北渡
     */
    List<UserAwardRecordVO> pageUserRecords(@Param("uid") String uid, @Param("param") ActivityAwardRecordsQuery param);

    /**
     * 查询用户中奖记录详情
     *
     * @param uid     用户ID
     * @param orderNo 订单编号
     * @author 北渡
     */
    UserAwardRecordDetailVO recordDetail(@Param("uid") String uid, @Param("orderNo") String orderNo);

    /**
     * 根据条件查询抽奖活动参与列表
     *
     * @param query 查询条件
     * @author 北渡
     */
    List<ActivityLotteryListVO> lotteryJoinList(JoinListQuery query);

}
